package Package.Threads.Question;

public class Question {
//    安全问题出现的条件
//是多线程环境
//有共享数据
//有多条语句操作共享数据
//如何解决多线程安全问题呢?
//基本思想：让程序没有安全问题的环境
//怎么实现呢?
//把多条语句操作共享数据的代码给锁起来，让任意时刻只能有一个线程执行即可
//Java提供了同步代码块的方式来解决
//    同步代码块格式：
//synchronized(任意对象)：就相当于给代码加锁了，任意对象就可以看成是一把锁
//同步的好处和弊端
//好处：解决了多线程的数据安全问题
//弊端：当线程很多时，因为每个线程都会去判断同步上的锁，这是很耗费资源的，无形中会降低程序的
//运行效率
    public static final void Question(){
        SellTicket st=new SellTicket();
        Thread t1 = new Thread(st, "窗口1");
        Thread t2 = new Thread(st, "窗口2");
        Thread t3 = new Thread(st, "窗口3");
        t1.start();
        t2.start();
        t3.start();
    }
}
